from flask import Flask, render_template, request, redirect, url_for, session
from datetime import datetime

app = Flask(__name__)
app.secret_key = 'your_secret_key'  # 替换为你的安全密钥

# 存储联系人的字典，同时包含添加时间
contacts = {}

# 辅助函数：将联系人按首字母排序
def sort_by_name(contacts):
    return dict(sorted(contacts.items()))

# 辅助函数：将联系人按添加时间排序
def sort_by_time(contacts):
    return dict(sorted(contacts.items(), key=lambda item: item[1]['time']))

@app.route('/')
def index():
    # 获取排序方式（默认为按首字母排序）
    sort_by = request.args.get('sort_by', 'name')
    
    # 根据排序方式获取排序后的联系人列表
    if sort_by == 'name':
        sorted_contacts = sort_by_name(contacts)
    elif sort_by == 'time':
        sorted_contacts = sort_by_time(contacts)
    else:
        sorted_contacts = contacts  # 默认或未知排序方式时，使用原始顺序
    
    return render_template('index.html', contacts=sorted_contacts, sort_by=sort_by)

@app.route('/add_contact', methods=['POST'])
def add_contact():
    name = request.form['name']
    phone = request.form['phone']
    
    # 存储添加时间
    contacts[name] = {'phone': phone, 'time': datetime.now()}
    
    return redirect(url_for('index'))

@app.route('/edit_contact/<name>', methods=['GET', 'POST'])
def edit_contact(name):
    if name not in contacts:
        return redirect(url_for('index'))  # 如果联系人不存在，重定向回主页
    
    if request.method == 'POST':
        new_phone = request.form['phone']
        contacts[name]['phone'] = new_phone  # 更新电话号码
        return redirect(url_for('index'))
    
    # GET 请求时，显示编辑表单
    return render_template('edit_contact.html', name=name, phone=contacts[name]['phone'])

@app.route('/delete_contact/<name>', methods=['POST'])
def delete_contact(name):
    if name in contacts:
        del contacts[name]
    return redirect(url_for('index'))

@app.route('/contact/<name>')
def contact_detail(name):
    if name in contacts:
        contact_info = contacts[name]
        return render_template('contact_detail.html', name=name, phone=contact_info['phone'], time=contact_info['time'])
    else:
        return redirect(url_for('index'))  # 如果联系人不存在，重定向回主页

if __name__ == '__main__':
    app.run(debug=True)